<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class facturacion_rpt extends MY_Controller {
	
	/**
	 * Evita la validacion (enfocado cuando se usa ajax). Ver mas en privilegios_model
	 * @var unknown_type
	 */
	private $excepcion_privilegio = array('facturacion_rpt/cerrar_dia/');
	
	public function _remap($method){
		$this->carabiner->css(array(
				array('libs/jquery-ui.css', 'screen'),
				array('libs/ui.notify.css', 'screen'),
				array('libs/jquery.treeview.css', 'screen'),
				array('base.css', 'screen')
		));
		$this->carabiner->js(array(
				array('libs/jquery.min.js'),
				array('libs/jquery-ui.js'),
				array('libs/jquery.notify.min.js'),
				array('libs/jquery.treeview.js'),
				array('general/alertas.js')
		));
		
		$this->load->model("empleados_model");
		if($this->empleados_model->checkSession()){
			$this->empleados_model->excepcion_privilegio = $this->excepcion_privilegio;
			$this->info_empleado = $this->empleados_model->getInfoEmpleado($_SESSION['id_empleado'], true);
			if($this->empleados_model->tienePrivilegioDe('', get_class($this).'/'.$method.'/')){
				$this->{$method}();
			}else
				redirect(base_url('panel/home?msg=1'));
		}else
			redirect(base_url('panel/home'));
	}
	
	private function index(){
		$this->carabiner->css(array(
				array('libs/jquery.msgbox.css','screen'),
				array('general/forms.css','screen'),
				array('general/tables.css','screen')
			));
		
		$this->carabiner->js(array(
				array('libs/jquery.msgbox.min.js'),
				array('general/msgbox.js'),
				array('facturacion/reportes/facturas_diarias.js')
			));
		
		$this->load->library('pagination');
		
		$params['info_empleado']	= $this->info_empleado['info'];
		$params['opcmenu_active']	= 'Ventas'; //activa la opcion del menu
		$params['seo']				= array('titulo' => 'Reporte Facturas del día');
		
		$params['fecha'] = $this->input->get('ffecha1') != ''? $this->input->get('ffecha1'): date("Y-m-d");
		
		$this->load->model('facturacion_rpt_model');
		$params['fact'] = $this->facturacion_rpt_model->getFacturas($params['fecha']);
		
		
		if(isset($_GET['msg']{0}))
			$params['frm_errors'] = $this->showMsgs($_GET['msg']);
		
		$this->load->view('panel/header',$params);
		$this->load->view('panel/general/menu',$params);
		$this->load->view('panel/facturacion_rpt/listado',$params);
		$this->load->view('panel/footer',$params);
	}
	
	/**
	 * Actualiza la factura en el reporte de facturas del dia
	 */
	public function revisar(){
		if(isset($_POST['id_factura']{0}) && isset($_POST['revisado']{0})){
			$this->load->model('facturacion_rpt_model');
			$this->facturacion_rpt_model->updateFacturasDiarias();
			$params['msg'] = $this->showMsgs(3);
		}else
			$params['msg'] = $this->showMsgs(1);

		echo json_encode($params);
	}
	
	/**
	 * Cierra un dia en el reporte facturas del dia
	 */
	public function cerrar_dia(){
		if(isset($_POST['fecha']{0})){
			$this->load->model('facturacion_rpt_model');
			$resp = $this->facturacion_rpt_model->cerrarDiaFacturas();
			if($resp[0])
				$params['msg'] = $this->showMsgs(4);
			else
				$params['msg'] = $this->showMsgs(2, $resp[1]);
		}else
			$params['msg'] = $this->showMsgs(1);

		echo json_encode($params);
	}
	
	
	
	
	/**
	 * Muestra mensajes cuando se realiza alguna accion
	 * @param unknown_type $tipo
	 * @param unknown_type $msg
	 * @param unknown_type $title
	 */
	private function showMsgs($tipo, $msg='', $title='Reporte Facturacion!'){
		switch($tipo){
			case 1:
				$txt = 'El campo ID es requerido.';
				$icono = 'error';
				break;
			case 2: //Cuendo se valida con form_validation
				$txt = $msg;
				$icono = 'error';
				break;
			case 3:
				$txt = 'La Factura se modifico correctamente.';
				$icono = 'ok';
				break;
			case 4:
				$txt = 'El dia se reviso correctamente.';
				$icono = 'ok';
				break;
			case 5:
				$txt = 'La Factura se cancelo correctamente.';
				$icono = 'ok';
				break;
			case 6:
				$txt = 'La Serie y Folio se agregaron correctamente.';
				$icono = 'ok';
				break;
			case 7:
				$txt = 'La Serie y Folio se modifico correctamente.';
				$icono = 'ok';
				break;
			case 8:
				$txt = $msg;
				$icono = 'ok';
				break;
		}
	
		return array(
				'title' => $title,
				'msg' => $txt,
				'ico' => $icono);
	}	
}